// 加载环境配置  会将配置合并到 global.__config
require('./utils/env-loader')(); // 确保这行代码在其他代码之前执行
const express = require('express');
const logger = require('./services/logger');
const LogsService = require('./services/LogService'); // 导入日志服务模块
const { getFilePath } = require('./utils/util');

const app = express();

// 添加中间件解析请求体
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// 静态资源
app.use(express.static(getFilePath('/static')));

const site = global.__config.site;
for (const key in site) {
  if (site.hasOwnProperty(key)) {
    const item = site[key];
    app.get(`/${key}`, (req, res) => {
      // 记录转发请求
      logger.info(`${req.method} ${req.url}`, {
        metadata: {
          redirectUrl: item.host,
          headers: req.headers,
          body: req.body,
        },
      });
      res.redirect(item.host); // 重定向到目标地址
    });
  }
}

// 在 app.js 中添加
app.get('/api/logs', async (req, res) => {
  try {
    const limit = parseInt(req.query.limit) || 100;
    const logs = await LogsService.getAll(limit);
    res.json(logs);
  } catch (err) {
    logger.error('获取日志失败', err);
    res.status(500).send('Internal Server Error');
  }
});

app.get('/logs', (req, res) => {
  res.sendFile(getFilePath('/static/logs.html'));
});

// 示例路由
app.get('/', (req, res) => {
  res.send('这是一个简单的 Express 应用');
});

// 404 错误处理
app.use((req, res, next) => {
  res.status(404).sendFile(getFilePath('/static/404.html'));
});

// 500 错误处理
app.use((err, req, res, next) => {
  logger.error('服务器错误', err, { path: req.path });
  res.status(500).sendFile(getFilePath('/static/500.html'));
});

app.listen(9000, () => {
  logger.info('服务器启动', {
    metadata: {
      port: 9000,
    },
  });
});
